import {
  BwStyleFontWeightEnum,
  BwStyleMarginEnum,
  BwStylePaddingEnum,
  BwStyleAlignItemsEnum,
  BwStyleBorderStyleEnum,
  BwStyleCursorEnum,
  BwStyleDisplayEnum,
  BwStyleFlexDirectionEnum,
  BwStyleFontStyleEnum,
  BwStyleJustifyContentEnum,
  BwStyleTextAlignEnum,
  BwStyleTextDecorationEnum,
  BwStyleFontFamilyEnum,
  BwStyleBackgroundSizeEnum,
  BwStyleBackgroundRepeatEnum,
  BwStyleBackgroundAttachmentEnum,
} from '../enum'

/** 通用渲染样式模型 */
export interface BwStyleHoverProps
  extends BwStyleHoverFontModel,
    BwStyleHoverFlexModel,
    BwStyleHoverMarginModel,
    BwStyleHoverPaddingModel,
    BwStyleHoverBorderModel,
    BwStyleHoverRadiusModel,
    BwStyleHoverShadowModel,
    BwStyleHoverBackgroundModel {
  /** 宽度 */
  hoverWidth?: string

  /** 高度 */
  hoverHeight?: string

  /** 显示 */
  hoverDisplay?: BwStyleDisplayEnum | string

  /** flex-grow */
  hoverFlexGrow?: number

  /** 不透明度 */
  hoverOpacity?: number

  /** 鼠标手势 */
  hoverCursor?: BwStyleCursorEnum
}

/** 字体相关样式 */
export interface BwStyleHoverFontModel {
  /** 字体 */
  hoverFontFamily?: BwStyleFontFamilyEnum

  /** 字重 */
  hoverFontWeight?: BwStyleFontWeightEnum

  /** 字体样式 */
  hoverFontStyle?: BwStyleFontStyleEnum

  /** 颜色 */
  hoverColor?: string

  /** 字体大小 */
  hoverFontSize?: string

  /** 行高 */
  hoverLineHeight?: string

  /** 对齐 */
  hoverTextAlign?: BwStyleTextAlignEnum

  /** 修饰 */
  hoverTextDecoration?: BwStyleTextDecorationEnum
}

/** 弹性盒子相关样式 */
export interface BwStyleHoverFlexModel {
  /** 主轴方向 */
  hoverFlexDirection?: BwStyleFlexDirectionEnum

  /** 侧轴（纵轴）方向上的对齐方式 */
  hoverAlignItems?: BwStyleAlignItemsEnum

  /** 主轴上的子元素排列方式 */
  hoverJustifyContent?: BwStyleJustifyContentEnum
}

/** 外边距相关样式 */
export interface BwStyleHoverMarginModel {
  /** 左外边距 */
  hoverMarginLeft?: BwStyleMarginEnum | string

  /** 上外边距 */
  hoverMarginTop?: BwStyleMarginEnum | string

  /** 右外边距 */
  hoverMarginRight?: BwStyleMarginEnum | string

  /** 下外边距 */
  hoverMarginBottom?: BwStyleMarginEnum | string
}

/** 内边距相关样式 */
export interface BwStyleHoverPaddingModel {
  /** 左内边距 */
  hoverPaddingLeft?: BwStylePaddingEnum | string

  /** 上内边距 */
  hoverPaddingTop?: BwStylePaddingEnum | string

  /** 右内边距 */
  hoverPaddingRight?: BwStylePaddingEnum | string

  /** 下内边距 */
  hoverPaddingBottom?: BwStylePaddingEnum | string
}

/** 边框相关样式 */
export interface BwStyleHoverBorderModel {
  /** 边框左 线样式 */
  hoverBorderLeftStyle?: BwStyleBorderStyleEnum
  /** 边框左 宽度 */
  hoverBorderLeftWidth?: string
  /** 边框左 颜色 */
  hoverBorderLeftColor?: string
  /** 边框上 线样式 */
  hoverBorderTopStyle?: BwStyleBorderStyleEnum
  /** 边框上 宽度 */
  hoverBorderTopWidth?: string
  /** 边框上 颜色 */
  hoverBorderTopColor?: string
  /** 边框右 线样式 */
  hoverBorderRightStyle?: BwStyleBorderStyleEnum
  /** 边框右 宽度 */
  hoverBorderRightWidth?: string
  /** 边框右 颜色 */
  hoverBorderRightColor?: string
  /** 边框下 线样式 */
  hoverBorderBottomStyle?: BwStyleBorderStyleEnum
  /** 边框下 宽度 */
  hoverBorderBottomWidth?: string
  /** 边框下 颜色 */
  hoverBorderBottomColor?: string
}

/** 圆角相关样式 */
export interface BwStyleHoverRadiusModel {
  /** 圆角左上角*/
  hoverBorderTopLeftRadius?: string

  /** 圆角右上角*/
  hoverBorderTopRightRadius?: string

  /** 圆角左下角*/
  hoverBorderBottomLeftRadius?: string

  /** 圆角右下角*/
  hoverBorderBottomRightRadius?: string
}

/** 阴影相关样式 */
export interface BwStyleHoverShadowModel {
  /** 颜色 */
  hoverShadowColor?: string
  /** x轴水平方向偏移量 */
  hoverShadowX?: string
  /** y轴竖直方向偏移量 */
  hoverShadowY?: string
  /** 阴影模糊半径 */
  hoverShadowBlur?: string
  /** 阴影扩展半径 */
  hoverShadowSpread?: string
}

/** 背景相关样式 */
export interface BwStyleHoverBackgroundModel {
  /** 背景颜色 */
  hoverBackgroundColor?: string

  /** 背景图片 */
  hoverBackgroundImage?: string

  /** 背景定位 X轴 */
  hoverBackgroundPositionX?: string

  /** 背景定位 Y轴 */
  hoverBackgroundPositionY?: string

  /** 背景大小 */
  hoverBackgroundSize?: BwStyleBackgroundSizeEnum

  /** 背景大小 宽 */
  hoverBackgroundSizeWidth?: string

  /** 背景大小 高 */
  hoverBackgroundSizeHeight?: string

  /** 背景平铺 */
  hoverBackgroundRepeat?: BwStyleBackgroundRepeatEnum

  /** 背景固定 */
  hoverBackgroundAttachment?: BwStyleBackgroundAttachmentEnum
}
